package org.yzh.www.elseU;

import org.yzh.www.utils.GeneratePieChartUtil;
import org.yzh.www.utils.JFreeChartUtil;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class PieChartApp {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            // 创建窗口并添加面板
            JFrame frame = new JFrame("饼图展示");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            try {
                // 图例名称列表
                List<String> legendNameList = new ArrayList<>(Arrays.asList("一级", "二级", "三级", "四级", "五级"));
                // 数据列表
                List<Object> dataList = new ArrayList<>(Arrays.asList(1, 3, 5, 6, 2)); // 更改Object为Integer类型以匹配通常的期待类型
                // 图例背景颜色列表
                List<Color> legendColorList = new ArrayList<>(Arrays.asList(Color.YELLOW, Color.GRAY, Color.GREEN, Color.CYAN, Color.ORANGE));
                // 偏离百分比数据
                List<Double> explodePercentList = new ArrayList<>(Arrays.asList(0.1, 0.1, 0.1, 0.1, 0.1));
                System.out.println("图例名称列表: " + legendNameList);
                System.out.println("数据列表: " + dataList);
                System.out.println("图例颜色列表: " + legendColorList);
                System.out.println("偏离百分比列表: " + explodePercentList);
                // 假设GeneratePieChartUtil和JFreeChartUtil是存在的类，下面的调用需要根据实际的类和方法进行调整
                // 注意：此处假设createPieChart方法被调整为返回JPanel或JFreeChart以便于直接添加到Swing组件中
                byte[] byteArray = GeneratePieChartUtil.createPieChart("各级占比情况", legendNameList, dataList,
                        300, 400, JFreeChartUtil.createChartTheme("宋体"), legendColorList, explodePercentList);

                // 将字节流转换为BufferedImage
                ByteArrayInputStream bis = new ByteArrayInputStream(byteArray);
                BufferedImage image = ImageIO.read(bis);

                // 创建JLabel来显示图像
                JLabel label = new JLabel(new ImageIcon(image));

                // 创建JPanel并添加标签
                JPanel panel = new JPanel();
                panel.setLayout(new BorderLayout());
                panel.add(label, BorderLayout.CENTER);

                frame.getContentPane().add(panel);
                frame.pack();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
                JLabel errorLabel = new JLabel("图表生成出错：" + e.getMessage());
                frame.getContentPane().add(errorLabel, BorderLayout.CENTER);
            }

            frame.setVisible(true);
        });
    }
}